/**
 * @addtogroup brd_reset
 * brd_reset
 * @{
 */
/**
 * @file brd_reset.h
 * @brief 芯片复位板级层
 * @date 2023-08-18
 * @par 修改日志
 * <table>
 * <tr><th>Date <th>Version <th>Author <th>Description
 * <tr><td>2023-08-18 <td>1.0 <td>软件工程院 <td>创建初始版本
 * @par 示例
 * @code
   /// 上电在Brd_Init后读取复位原因.
   Int32 reason;
   Brd_ResetGetReason(source, &reason);
   /// 为保证重启后复位原因正确, 需手动清除复位原因
   Brd_ResetClrReason(source);
   ...
   /// 触发复位
   Brd_ResetTrigger(source);
 * @endcode
 * @copyright 杭州鸿泉物联网技术股份有限公司
 */

#ifndef _BRD_RESET_H_
#define _BRD_RESET_H_

#include <ofc_types.h>

#ifdef __cplusplus
extern "C" {
#endif

/**
 * 获取复位原因
 * @param source: 复位源, 参见[brd_reset_def.h](@ref Brd_TResetXxxSourceTag)
 * @param reason: 复位原因, 参见[brd_reset_def.h](@ref Brd_TResetXxxReasonTag)
 * @return 当返回值 >= 0 时, 表示读取成功 \n
 *         当返回值 < 0 时, 表示读取失败参见[brd_common_def.h](@ref Brd_TErrorCodeTag)
 */
Int32 Brd_ResetGetReason(Int32 source, UInt32 *reason);

/**
 * 清除复位原因
 * @param source: 复位源, 参见[brd_reset_def.h](@ref Brd_TResetXxxSourceTag)
 * @return 当返回值 >= 0 时, 表示成功 \n
 *         当返回值 < 0 时, 表示失败参见[brd_common_def.h](@ref Brd_TErrorCodeTag)
 */
Int32 Brd_ResetClrReason(Int32 source);

/**
 * 直接触发复位(功能\破坏)
 * @param source: 复位源, 参见[brd_reset_def.h](@ref Brd_TResetXxxSourceTag) 仅支持功能和破坏
 * @return 当返回值 >= 0 时, 表示复位成功 \n
 *         当返回值 < 0 时, 表示复位失败参见[brd_common_def.h](@ref Brd_TErrorCodeTag)
 *         注:实际由于复位产生程序重新运行 返回值无意义
 */
Int32 Brd_ResetTrigger(Int32 source);

#ifdef __cplusplus
}  ///< extern "C"
#endif

#endif // _BRD_RESET_H_
/**
 * @} 
 */
